home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / lasc / kluwer.bst < prev    next >
Text File  |  1993-08-09  |  15KB  |  789 lines

  1. % FILE. . . . . /usr/bloom2/slang/hassan/papers/lasc/kluwer.bst
  2. % EDIT BY . . . Hassan Ait-Kaci
  3. % ON MACHINE. . Phoebus.Aca.Mcc.Com
  4. % STARTED ON. . Wed May 25 11:56:04 1988
  5.  
  6. % BibTeX style file for Kluwer Academic Pubishers
  7. % Adapted by Hassan Ait-Kaci (hassan@mcc.com) from
  8. % BibTeX standard bibliography style `plain' and `alpha'
  9.     % version 0.98c for BibTeX versions 0.98i or later, LaTeX version 2.08
  10.     % Copyright (C) 1985, all rights reserved
  11.     % Copying of this file is authorized only if either
  12.     % (1) you make absolutely no changes to your copy, including name, or
  13.     % (2) if you do make changes, you name it something other than
  14.     % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst
  15.     % This restriction helps ensure that all standard styles are identical
  16.  
  17. ENTRY {
  18.     address
  19.     author
  20.     booktitle
  21.     chapter
  22.     edition
  23.     editor
  24.     howpublished
  25.     institution
  26.     journal
  27.     key
  28.     location
  29.     month
  30.     note
  31.     number
  32.     organization
  33.     pages
  34.     publisher
  35.     school
  36.     series
  37.     title
  38.     type
  39.     volume
  40.     year
  41.   }
  42.   {}
  43.   { label }
  44.  
  45. INTEGERS { output.state before.all mid.sentence after.sentence after.block blank.or.comma }
  46.  
  47. FUNCTION {init.state.consts}
  48. { #0 'before.all :=
  49.   #1 'mid.sentence :=
  50.   #2 'after.sentence :=
  51.   #3 'after.block :=
  52.   #0 'blank.or.comma :=
  53. }
  54.  
  55. STRINGS { s t }
  56.  
  57. FUNCTION{inc.blank.or.comma}
  58. { blank.or.comma #2 =
  59.     { #0 'blank.or.comma := }
  60.     { blank.or.comma #1 + 'blank.or.comma := }
  61.   if$
  62. }
  63.  
  64. FUNCTION {output.nonnull}
  65. { 's :=
  66.   output.state mid.sentence =
  67.     { blank.or.comma #0 =
  68.         { ", " * write$ }
  69.         { " " * write$
  70.           inc.blank.or.comma
  71.         }
  72.       if$
  73.     }
  74.     { output.state after.block =
  75.     { add.period$ write$
  76.       newline$
  77.       "\newblock " write$
  78.     }
  79.     { output.state before.all =
  80.         { write$ }
  81.         { add.period$ " " * write$ }
  82.       if$
  83.     }
  84.       if$
  85.       #0 'blank.or.comma :=
  86.     }
  87.   if$
  88.   mid.sentence 'output.state :=
  89.   s
  90. }
  91.  
  92. FUNCTION {output}
  93. { 's :=
  94.   s "" =
  95.     'skip$
  96.     { s output.nonnull
  97.     }
  98.   if$
  99. }
  100.  
  101. FUNCTION {output.check}
  102. { 's :=
  103.   't :=
  104.   s "" =
  105.     { "Warning: the " t * " shouldn't be empty in " * cite$ * top$
  106.     }
  107.     { s output.nonnull
  108.     }
  109.   if$
  110. }
  111.  
  112. FUNCTION {output.bibitem}
  113. { newline$
  114.   "\bibitem{" write$
  115.   cite$ write$
  116.   "}" write$
  117.   newline$
  118.   ""
  119.   before.all 'output.state :=
  120. }
  121.  
  122. FUNCTION {fin.entry}
  123. { add.period$
  124.   write$
  125.   newline$
  126. }
  127.  
  128. FUNCTION {new.block}
  129. { output.state before.all =
  130.     'skip$
  131.     { after.block 'output.state := }
  132.   if$
  133. }
  134.  
  135. FUNCTION {not}
  136. {   { #0 }
  137.     { #1 }
  138.   if$
  139. }
  140.  
  141. FUNCTION {and}
  142. {   'skip$
  143.     { pop$ #0 }
  144.   if$
  145. }
  146.  
  147. FUNCTION {or}
  148. {   { pop$ #1 }
  149.     'skip$
  150.   if$
  151. }
  152.  
  153. FUNCTION {field.or.null}
  154. { duplicate$
  155.   missing$
  156.     { pop$
  157.       ""
  158.     }
  159.     'skip$
  160.   if$
  161. }
  162.  
  163. FUNCTION {slantify}
  164. { 's :=
  165.   s "" =
  166.     { "" }
  167.     { "{\sl " s * "}" * }
  168.   if$
  169. }
  170.  
  171. INTEGERS{ nameptr namesleft numnames }
  172.  
  173. STRINGS{ nameresult }
  174.  
  175. FUNCTION {format.names}
  176. { 's :=
  177.   #1 'nameptr :=
  178.   "" 'nameresult :=
  179.   s num.names$ 'numnames :=
  180.   numnames 'namesleft :=
  181.     { namesleft #0 > }
  182.     {
  183.       s nameptr "{vv }{ll}{, jj}{, ff}" format.name$ 't :=
  184.       nameptr #1 >
  185.     { namesleft #1 >
  186.         { nameresult ", " * t * 'nameresult := }
  187.         { numnames #2 >
  188.         { nameresult "," * 'nameresult := }
  189.         'skip$
  190.           if$
  191.           t "others" =
  192.         { nameresult " {\sl et al.}" * 'nameresult := }
  193.         { nameresult " and " * t * 'nameresult := }
  194.           if$
  195.         }
  196.       if$
  197.     }
  198.     { nameresult t * 'nameresult := }
  199.       if$
  200.       nameptr #1 + 'nameptr :=
  201.       namesleft #1 - 'namesleft :=
  202.     }
  203.   while$
  204.   nameresult
  205. }
  206.  
  207. FUNCTION {format.authors}
  208. { author missing$
  209.     {""}
  210.     {author format.names}
  211.   if$
  212. }
  213.  
  214. FUNCTION {format.editors}
  215. { editor missing$
  216.     { ""
  217.     }
  218.     {
  219.       editor num.names$ #1 >
  220.     { editor format.names ", editors" * }
  221.     { editor format.names ", editor" * }
  222.       if$
  223.     }
  224.   if$
  225. }
  226.  
  227. FUNCTION {format.title}
  228. { title missing$
  229.     { "" }
  230.     { title "t" change.case$ }
  231.   if$
  232. }
  233.  
  234. FUNCTION {entry.string.max} { #100 }
  235.  
  236. FUNCTION {global.string.max} { #300 }
  237.  
  238. STRINGS{ pageresult }
  239.  
  240. FUNCTION {n.dashify}
  241. { 't :=
  242.   "" 'pageresult :=
  243.     { t "" = not }
  244.     { t #1 #1 substring$ "-" =
  245.     { t #1 #2 substring$ "--" = not
  246.         { pageresult "--" * 'pageresult :=
  247.           t #2 global.string.max substring$ 't :=
  248.         }
  249.         {   { t #1 #1 substring$ "-" =}
  250.         { pageresult "-" * 'pageresult :=
  251.           t #2 global.string.max substring$ 't :=
  252.         }
  253.           while$
  254.         }
  255.       if$
  256.     }
  257.     { pageresult t #1 #1 substring$ * 'pageresult :=
  258.       t #2 global.string.max substring$ 't :=
  259.     }
  260.       if$
  261.     }
  262.   while$
  263.   pageresult
  264. }
  265.  
  266. FUNCTION{format.vol.num}
  267. { volume field.or.null
  268.   number missing$
  269.     { booktitle missing$
  270.         { "" }
  271.     { ", " booktitle * }
  272.       if$
  273.     }
  274.     { ", " number *
  275.       booktitle missing$
  276.         { "" }
  277.     { ", " booktitle * }
  278.       if$
  279.       *
  280.     }
  281.   if$
  282.   *
  283. }
  284.  
  285. FUNCTION{format.date}
  286. { inc.blank.or.comma
  287.   year missing$
  288.     { month missing$
  289.     { "" }
  290.     { "Warning: there's a month but no year in " cite$ * top$
  291.       "(" month * ")" *
  292.     }
  293.       if$
  294.     }
  295.     { month missing$
  296.     { "(" year * ")" * }
  297.     { "(" month * " " * year * ")" *}
  298.       if$
  299.     }
  300.   if$
  301. }
  302.  
  303. FUNCTION{format.btitle}
  304. { title field.or.null
  305.   slantify
  306. }
  307.  
  308. FUNCTION{format.bvolume}
  309. { volume missing$
  310.     { series missing$
  311.     { "" }
  312.     { series slantify }
  313.       if$
  314.     }
  315.     { "Volume~" volume *
  316.       series missing$
  317.     'skip$
  318.     { " of " * series slantify * }
  319.       if$
  320.     }
  321.   if$
  322. }
  323.  
  324. FUNCTION{format.edition}
  325. { edition empty$
  326.     { "" }
  327.     { output.state mid.sentence =
  328.     { edition "l" change.case$ " edition" * }
  329.     { edition "t" change.case$ " edition" * }
  330.       if$
  331.     }
  332.   if$
  333. }
  334.  
  335. INTEGERS{ multiresult }
  336.  
  337. FUNCTION{multi.page.check}
  338. { 't :=
  339.   #0 'multiresult :=
  340.     { multiresult not
  341.       t "" = not
  342.       and
  343.     }
  344.     { t #1 #1 substring$ "-" =
  345.       t #1 #1 substring$ "," =
  346.       or
  347.     { #1 'multiresult := }
  348.     { t #2 global.string.max substring$ 't := }
  349.       if$
  350.     }
  351.   while$
  352.   multiresult
  353. }
  354.  
  355. FUNCTION{format.pages}
  356. { pages missing$
  357.     { "" }
  358.     { pages multi.page.check
  359. %    { "pages~" pages n.dashify * }
  360.     { pages n.dashify }
  361.     { "page~" pages n.dashify * }
  362.       if$
  363.     }
  364.   if$
  365. }
  366.  
  367. FUNCTION{format.chapter}
  368. { chapter missing$
  369.     { "" }
  370.     { "chapter~" chapter * }
  371.   if$
  372. }
  373.  
  374. FUNCTION{format.in.ed.booktitle}
  375. { booktitle missing$
  376.     { ""
  377.     }
  378.     { format.editors 's :=
  379.       s "" =
  380.     { "In " booktitle slantify * }
  381.     { "In " s * ", " * booktitle slantify * }
  382.       if$
  383.     }
  384.   if$
  385. }
  386.  
  387. FUNCTION{format.tr.number}
  388. { type missing$
  389.     { "Technical Report" }
  390.     { type }
  391.   if$
  392.   number missing$
  393.     'skip$
  394.     { "~" * number * }
  395.   if$
  396. }
  397.  
  398. FUNCTION{article}
  399. { output.bibitem
  400.   "author" format.authors output.check
  401.   new.block
  402.   "title" format.title output.check
  403.   new.block
  404.   "journal" journal field.or.null slantify output.check
  405.   format.vol.num output
  406.   "year" format.date output.check
  407.   format.pages output
  408.   new.block
  409.   note field.or.null output
  410.   fin.entry
  411. }
  412.  
  413. FUNCTION{book}
  414. { output.bibitem
  415.   author missing$
  416.     { "author and editor" format.editors output.check
  417.     }
  418.     { "author" format.authors output.check
  419.     }
  420.   if$
  421.   new.block
  422.   "title" format.btitle output.check
  423.   new.block
  424.   format.bvolume output
  425.   "publisher" publisher field.or.null output.check
  426.   address field.or.null output
  427.   format.edition output
  428.   "year" format.date output.check
  429.   new.block
  430.   note field.or.null output
  431.   fin.entry
  432. }
  433.  
  434. FUNCTION{booklet}
  435. { output.bibitem
  436.   format.authors output
  437.   new.block
  438.   "title" format.btitle output.check
  439.   new.block
  440.   howpublished field.or.null output
  441.   address field.or.null
  442.   format.date output
  443.   new.block
  444.   note field.or.null output
  445.   fin.entry
  446. }
  447.  
  448. FUNCTION{inbook}
  449. { output.bibitem
  450.   author missing$
  451.     { "author and editor" format.editors output.check
  452.     }
  453.     { "author" format.authors output.check
  454.     }
  455.   if$
  456.   new.block
  457.   "title" format.btitle output.check
  458.   new.block
  459.   format.bvolume output
  460.   "publisher" publisher field.or.null output.check
  461.   address field.or.null output
  462.   format.edition output
  463.   "year" format.date output.check
  464.   "chapter" format.chapter output.check
  465.   format.pages output
  466.   new.block
  467.   note field.or.null output
  468.   fin.entry
  469. }
  470.  
  471. FUNCTION{incollection}
  472. { output.bibitem
  473.   "authors" format.authors output.check
  474.   new.block
  475.   "title" format.title output.check
  476.   new.block
  477.   "booktitle" format.in.ed.booktitle output.check
  478.   format.chapter output
  479.   "publisher" publisher field.or.null output.check
  480.   address field.or.null output
  481.   "year" format.date output.check
  482.   format.pages output
  483.   new.block
  484.   note field.or.null output
  485.   fin.entry
  486. }
  487.  
  488. FUNCTION{intechreport}
  489. { output.bibitem
  490.   "authors" format.authors output.check
  491.   new.block
  492.   "title" format.title output.check
  493.   new.block
  494.   "booktitle" format.in.ed.booktitle output.check
  495.   format.tr.number output
  496.   "institution" institution field.or.null output.check
  497.   address field.or.null output
  498.   "year" format.date output.check
  499.   format.chapter output
  500.   format.pages output
  501.   new.block
  502.   note field.or.null output
  503.   fin.entry
  504. }
  505.  
  506. FUNCTION{inproceedings}
  507. { output.bibitem
  508.   "author" format.authors output.check
  509.   new.block
  510.   "title" format.title output.check
  511.   new.block
  512.   "booktitle" format.in.ed.booktitle output.check
  513.   location field.or.null output
  514.   organization field.or.null output
  515.   publisher field.or.null output
  516.   address field.or.null output
  517.   "year" format.date output.check
  518.   format.pages output
  519.   new.block
  520.   note field.or.null output
  521.   fin.entry
  522. }
  523.  
  524. FUNCTION{conference} {inproceedings}
  525.  
  526. FUNCTION{manual}
  527. { output.bibitem
  528.   format.authors output
  529.   new.block
  530.   "title" format.btitle output.check
  531.   new.block
  532.   organization field.or.null output
  533.   address field.or.null output
  534.   format.edition output
  535.   format.date output
  536.   new.block
  537.   note field.or.null output
  538.   fin.entry
  539. }
  540.  
  541. FUNCTION{mastersthesis}
  542. { output.bibitem
  543.   "author" format.authors output.check
  544.   new.block
  545.   "title" format.btitle output.check
  546.   new.block
  547.   "Master's thesis" output
  548.   "school" school field.or.null output.check
  549.   address field.or.null output
  550.   "year" format.date output.check
  551.   new.block
  552.   note field.or.null output
  553.   fin.entry
  554. }
  555.  
  556. FUNCTION{misc}
  557. { output.bibitem
  558.   format.authors output
  559.   new.block
  560.   format.title output
  561.   new.block
  562.   howpublished field.or.null output
  563.   format.date output
  564.   new.block
  565.   note field.or.null output
  566.   fin.entry
  567. }
  568.  
  569. FUNCTION{phdthesis}
  570. { output.bibitem
  571.   "author" format.authors output.check
  572.   new.block
  573.   "title" format.btitle output.check
  574.   new.block
  575.   "PhD thesis" output
  576.   "school" school field.or.null output.check
  577.   address field.or.null output
  578.   "year" format.date output.check
  579.   new.block
  580.   note field.or.null output
  581.   fin.entry
  582. }
  583.  
  584. FUNCTION{proceedings}
  585. { output.bibitem
  586.   editor missing$
  587.     { "editor and organization" organization field.or.null output.check
  588.     }
  589.     { "editor" format.editors output.check
  590.     }
  591.   if$
  592.   new.block
  593.   "title" format.btitle output.check
  594.   publisher field.or.null output
  595.   address field.or.null output
  596.   "year" format.date output.check
  597.   new.block
  598.   note field.or.null output
  599.   fin.entry
  600. }
  601.  
  602. FUNCTION{techreport}
  603. { output.bibitem
  604.   "author" format.authors output.check
  605.   new.block
  606.   "title" format.btitle output.check
  607.   new.block
  608.   format.tr.number output
  609.   "institution" institution field.or.null output.check
  610.   address field.or.null output
  611.   "year" format.date output.check
  612.   new.block
  613.   note field.or.null output
  614.   fin.entry
  615. }
  616.  
  617. FUNCTION{unpublished}
  618. { output.bibitem
  619.   "author" format.authors output.check
  620.   new.block
  621.   "title" format.title output.check
  622.   new.block
  623.   format.date output
  624.   new.block
  625.   "note" note field.or.null output.check
  626.   fin.entry
  627. }
  628.  
  629. FUNCTION{default.type} {book}
  630.  
  631. MACRO{jan} {"January"}
  632. MACRO{feb} {"February"}
  633. MACRO{mar} {"March"}
  634. MACRO{apr} {"April"}
  635. MACRO{may} {"May"}
  636. MACRO{jun} {"June"}
  637. MACRO{jul} {"July"}
  638. MACRO{aug} {"August"}
  639. MACRO{sep} {"September"}
  640. MACRO{oct} {"October"}
  641. MACRO{nov} {"November"}
  642. MACRO{dec} {"December"}
  643. MACRO{acmcs} {"ACM Computing Surveys"}
  644. MACRO{acta} {"Acta Informatica"}
  645. MACRO{cacm} {"Communications of the ACM"}
  646. MACRO{ibmjrd} {"IBM Journal of Research and Development"}
  647. MACRO{ibmsj} {"IBM Systems Journal"}
  648. MACRO{ieeese} {"IEEE Transactions on Software Engineering"}
  649. MACRO{ieeetc} {"IEEE Transactions on Computers"}
  650. MACRO{ieeetcad}
  651.  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  652. MACRO{ipl} {"Information Processing Letters"}
  653. MACRO{jacm} {"Journal of the ACM"}
  654. MACRO{jcss} {"Journal of Computer and System Sciences"}
  655. MACRO{scp} {"Science of Computer Programming"}
  656. MACRO{sicomp} {"SIAM Journal on Computing"}
  657. MACRO{tocs} {"ACM Transactions on Computer Systems"}
  658. MACRO{tods} {"ACM Transactions on Database Systems"}
  659. MACRO{tog} {"ACM Transactions on Graphics"}
  660. MACRO{toms} {"ACM Transactions on Mathematical Software"}
  661. MACRO{toois} {"ACM Transactions on Office Information Systems"}
  662. MACRO{toplas} {"ACM Transactions on Programming Languages and Systems"}
  663. MACRO{tsc} {"Theoretical Computer Science"}
  664.  
  665. READ
  666.  
  667. FUNCTION{sort.format.names}
  668. { 's :=
  669.   #1 'nameptr :=
  670.   "" 'nameresult :=
  671.   s num.names$ 'namesleft :=
  672.     { namesleft #0 > }
  673.     { namesleft #1 - 'namesleft :=
  674.       nameptr #1 >
  675.     { nameresult "   " * 'nameresult := }
  676.     'skip$
  677.       if$
  678.     nameresult
  679.       s nameptr "{vv }{ll}{  f}{  jj}" format.name$
  680.         "l" change.case$
  681.       purify$
  682.       *
  683.     'nameresult
  684.     :=
  685.        nameptr #1 =
  686.          { nameresult "   " * namesleft #1 + int.to.str$ *
  687.        'nameresult
  688.        := }
  689.      'skip$
  690.        if$
  691.       nameptr #1 + 'nameptr :=
  692.     }
  693.   while$
  694.   nameresult    % return the result
  695. }
  696.  
  697. INTEGERS { len }
  698.  
  699. FUNCTION{chop.word}
  700. { 's :=
  701.   'len :=
  702.   s #1 len substring$ =        % comparing against w, on the stack
  703.     { s len #1 + global.string.max substring$ }
  704.     { s }
  705.   if$
  706. }
  707.  
  708. FUNCTION{sort.format.title}
  709. { 't :=
  710.   "A " #2
  711.     "An " #3
  712.       "The " #4 t chop.word
  713.     chop.word
  714.   chop.word
  715.   #1 global.string.max substring$
  716.   purify$
  717. }
  718.  
  719. FUNCTION{presort}
  720. { author missing$
  721.     { editor missing$
  722.     { key field.or.null }
  723.     { editor sort.format.names }
  724.       if$
  725.     }
  726.     { author sort.format.names }
  727.   if$
  728.   "    "
  729.   *
  730.   year field.or.null
  731.   *
  732.   "    "
  733.   *
  734.   title field.or.null
  735.   sort.format.title
  736.   *
  737.   #1 entry.string.max substring$
  738.   'sort.key$ :=
  739. }
  740.  
  741. ITERATE{presort}
  742.  
  743. SORT
  744.  
  745. STRINGS {longest.label}
  746.  
  747. INTEGERS { number.label longest.label.width }
  748.  
  749. FUNCTION {initialize.longest.label}
  750. { "" 'longest.label :=
  751.   #1 'number.label :=
  752.   #0 'longest.label.width :=
  753. }
  754.  
  755. FUNCTION {longest.label.pass}
  756. { number.label int.to.str$ 'label :=
  757.   number.label #1 + 'number.label :=
  758.   label width$ longest.label.width >
  759.     { label 'longest.label :=
  760.       label width$ 'longest.label.width :=
  761.     }
  762.     'skip$
  763.   if$
  764. }
  765.  
  766. EXECUTE {initialize.longest.label}
  767.  
  768. ITERATE {longest.label.pass}
  769.  
  770. FUNCTION{preamble}
  771. { init.state.consts
  772.   "% Bibliography Style for Kluwer Academic Publishers (May 1988)" write$
  773.   newline$
  774.   "% Adapted by Hassan Ait-Kaci, MCC, Austin, TX (hassan@mcc.com)" write$
  775.   newline$ newline$ 
  776.   "\begin{thebibliography}{" longest.label * "}" * write$
  777.   newline$
  778. }
  779.  
  780. FUNCTION{finish.up}
  781. { newline$ "\end{thebibliography}" write$ newline$}
  782.  
  783. EXECUTE{preamble}
  784.  
  785. ITERATE{call.type$}
  786.  
  787. EXECUTE{finish.up}
  788.  
  789.